//
//  SinaNewFeatureCollectionViewController.swift
//  WeiBo
//
//  Created by Apple on 16/1/4.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit


/*
    实现思路
    
    1. 设置 布局
    2. 注册cell, 实现dataSource
    3. 自定义cell,添加子控件 

*/
private let reuseIdentifier = "Cell"
let count = 4
class SinaNewFeatureCollectionViewController: UICollectionViewController {

    let flowLayout = UICollectionViewFlowLayout()
    
   required init(){
        
        super.init(collectionViewLayout: flowLayout)
        
    }

   required init?(coder aDecoder: NSCoder) {
       fatalError("init(coder:) has not been implemented")
   }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        setupUI()
       
    }

    // 设置子空间
    private func setupUI(){
    
        // 注册cell-- 先注册系统的cell
        
        // UICollectionViewCell.self用这个来 代替 class
        collectionView?.registerClass(SinaNewFeatureCollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
        // 分页需要设置 collectionView
        collectionView?.pagingEnabled  = true
        collectionView?.bounces = false
        //关闭导航条
        collectionView?.showsHorizontalScrollIndicator = false
        collectionView?.showsVerticalScrollIndicator = false
        //设置 item大小
        // 1.先得获取布局
        flowLayout.itemSize = UIScreen.mainScreen().bounds.size
        // 2. 设置方向和间距
        flowLayout.scrollDirection = UICollectionViewScrollDirection.Horizontal
        
        flowLayout.minimumInteritemSpacing = 0
        flowLayout.minimumLineSpacing = 0
    
        
    }
}

// 
extension SinaNewFeatureCollectionViewController {

    override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return count
    }
    
    
    override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! SinaNewFeatureCollectionViewCell
        
        
        // 为了方便测试 给他们一个背景颜色
        cell.backgroundColor = indexPath.item % 2 == 0 ? UIColor.redColor() : UIColor.yellowColor()
        
        
        cell.index = indexPath.item
        
        return cell
    }
}

class SinaNewFeatureCollectionViewCell: UICollectionViewCell {
    
    // 设置模型
    var index: Int = 0 {
    
        didSet{
            iconImageView.image = UIImage(named: "new_feature_\(index + 1)")
            
            if index == 3 {
                enterButton.hidden = false
            }else {
                enterButton.hidden = true
            }
            
        }
        
    }
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        // 
        setupUI()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    //MARK:--按钮点击方法
    func enter(){
    
        printLog("点击进入!!!!")
         NSNotificationCenter.defaultCenter().postNotificationName(kNotificationEnter, object: nil)
        
        
    }
    //MARK:设置子控件和给子空间添加约束
    private func setupUI(){
    
        
        // 添加子控件
        addSubview(iconImageView)
        addSubview(enterButton)
        
        // 设置约束 -- 直接设置 frame
        iconImageView.frame = bounds
        //设置 约束 -- 水平居中 ,距离cell的底部 150
        
        //第一步一定要关掉 translatesAutoresizingMaskIntoConstraints
        enterButton.translatesAutoresizingMaskIntoConstraints = false
        
        // 这个约束是添加到 button上还是 添加到 button的父试图 cell上
        // 约束要添加到 cell,!!!!!!!!!!!千万不要添加到 enterButton.addConstraint
        addConstraint(NSLayoutConstraint(item: enterButton, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.CenterX, multiplier: 1.0, constant: 0))
        addConstraint(NSLayoutConstraint(item: enterButton, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.Bottom, multiplier: 1.0, constant: -150))
    }
    
    
    //MARK:--懒加载
    lazy var iconImageView: UIImageView = {
    
        let img = UIImageView()
        
        
        return img
    }()
    
    //进入按钮
    lazy var enterButton: UIButton = {
    
        let button = UIButton(type: UIButtonType.Custom)
        
        //设置图片
        button.setBackgroundImage(UIImage(named: "new_feature_finish_button"), forState: UIControlState.Normal)
        button.setBackgroundImage(UIImage(named: "new_feature_finish_button_highlighted"), forState: UIControlState.Highlighted)
        
        // 设置标题
        button.setTitle("立即进入", forState: UIControlState.Normal)
        
        // 文字颜色
        button.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
        
        // 2中方式 --
        // 可以用 sizeToFit 是背景图片的时候,这个大小可以被背景图片所撑开
        // 第二种方式: 设置约束或者 frame, 这个方式是不是 我们大小自己可以设置或者不确定的时候
        button.sizeToFit()
        
        
        // 添加一个按钮点击事件
        button.addTarget(self, action: "enter", forControlEvents: UIControlEvents.TouchUpInside)
        
        return button
        
    }()
}
